package faktorI;

public class LstZaklj extends Lista{
	
	private static LstZaklj instanca;
	
	public static LstZaklj instanca(){
		if(instanca == null) return instanca = new LstZaklj();
		else return instanca;
	}
	
	public boolean postojiSelektovan(){
		for (Zakljucak tek = (Zakljucak)prvo; tek != null; tek = (Zakljucak)tek.next){
			if(tek.getSelektovan())return true;
		}
		return false;
	}
	
	public void deselektujSelZaklj(){
		for (Zakljucak tek = (Zakljucak)prvo; tek != null; tek = (Zakljucak)tek.next){
			tek.setSelektovan(false);
		}
	}
	
	public void dodeliBrojeve(){
		int i=1;
		for (Zakljucak tek = (Zakljucak)prvo; tek != null; tek = (Zakljucak)tek.next){
			tek.setRedniBroj(i++);
		}
	}
	public Zakljucak selZaklj(){
		for (Zakljucak tek = (Zakljucak)prvo; tek != null; tek = (Zakljucak)tek.next){
			if(tek.getSelektovan())return tek;
		}
		return null;
	}
	
	public Zakljucak dohvatiZakljSaImenom(String s){
		for (Zakljucak tek = (Zakljucak)prvo; tek != null; tek = (Zakljucak)tek.next){
			if(s.equals(tek.getNaziv()))return tek;
		}
		return null;
	}
	
	public boolean dodaj(Zakljucak zakljucak){
		if (prvo == null)
			prvo = posl = zakljucak;
		else {
			for (Zakljucak tek = (Zakljucak)prvo; tek != null; tek = (Zakljucak)tek.next){
				if(tek.getNaziv().equals(zakljucak.getNaziv())){
					tek.povecajBrojPkojaVodeDoZ();
					return false;
				}
			}
			posl.next = zakljucak;
			posl = zakljucak;
		}
		return true;
	};
	
	public static void setZakljucke(LstZaklj lista){instanca = lista;}
	
	public String toString(){
		String s = "ZAKLJUCCI: \n\n";
		if(!prazna()){
			int i=0;
			for (Zakljucak tek = (Zakljucak)prvo; tek != null; tek = (Zakljucak)tek.next){
				i++;
				s += i;
				s += ")";
				s += tek;
				s += "\n";
			}
			return s;
		}
		else return s + "Lista zakljucaka je prazna!";
	}
}
